package controller;

import java.util.List;
import org.hibernate.*;
import model.conexao.HibernateUtil;
import model.crudxml.Paciente_complemento;

public class Paciente_complementoCrudXML {

        public void salvar(Paciente_complemento paciente_complemento) {
        Session sessao = null;
        Transaction transacao = null;
        try {

            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();
            sessao.save(paciente_complemento);
            transacao.commit();

        } catch (HibernateException e) {
            System.out.println("Atenção, ocorreu um problema ao tentar inserir \n " + 
                    "um paciente_complemento: \n"
                    + e.getMessage());
        } finally {
            try {
                sessao.close();
            } catch (Throwable e) {
                System.out.println("Erro ao fechar operação de inserção, Mensagem: "
                        + e.getMessage());
            }
        }
    }

    public void atualizar(Paciente_complemento paciente_complemento) {

        Session sessao = null;
        Transaction transacao = null;

        try {

            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();
            sessao.update(paciente_complemento);
            transacao.commit();

        } catch (HibernateException e) {
            System.out.println("Atenção, ocorreu um problema ao tentar atualizar um registro de Paciente_complemento: \n " + 
                    e.getMessage());
        } finally {
            try {
                sessao.close();
            } catch (Throwable e) {
                System.out.println(
                        "Erro ao fechar operação de atualização. Mensagem:" + e.getMessage());
            }
        }
    }

    public void excluir(Paciente_complemento paciente_complemento) {

        Session sessao = null;
        Transaction transacao = null;

        try {

            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();
            sessao.delete(paciente_complemento);
            transacao.commit();

        } catch (HibernateException e) {

            System.out.println("Atenção, ocorreu um problema ao tentar excluir um registro de paciente_complemento: \n " + 
                    e.getMessage());

        } finally {

            try {
                sessao.close();
            } catch (Throwable e) {

                System.out.println("Erro ao fechar operação de exclusão. Mensagem: "
                        + e.getMessage());
            }
        }
    }
     
    public List<Paciente_complemento> listar() {

        Session sessao = null;
        Transaction transacao = null;
        Query consulta = null;
        List<Paciente_complemento> resultado = null;

        try {

            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();
            consulta = sessao.createQuery("from Paciente_complemento");
            resultado = consulta.list();
            transacao.commit();
            return resultado;

        } catch (HibernateException e) {

            System.out.println("Não foi possível selecionar paciente_complementos. Erro: "
                    + e.getMessage());
            throw new HibernateException(e);

        } finally {

            try {
                sessao.close();
            } catch (Throwable e) {

                System.out.println("Erro ao fechar operação de consulta. Mensagem: "
                        + e.getMessage());
            }
        }
    }
    
    public Paciente_complemento buscarPaciente_complemento(int valor) {

        Paciente_complemento paciente_complemento = null;
        Session sessao = null;
        Transaction transacao = null;
        Query consulta = null;

        try {

            sessao = HibernateUtil.getSessionFactory().openSession();
            transacao = sessao.beginTransaction();
            consulta = sessao.createQuery("from Paciente_complemento where codigo :parametro");
            consulta.setInteger("parametro", valor);
            paciente_complemento = (Paciente_complemento) consulta.uniqueResult();
            transacao.commit();

            return paciente_complemento;

        } catch (HibernateException e) {

            System.out.println("Não foi possível buscar paciente_complemento. Erro: "
                    + e.getMessage());

        } finally {

            try {
                sessao.close();
            } catch (Throwable e) {

                System.out.println("Erro ao fechar operação de buscar. Mensagem: "
                        + e.getMessage());
            }
        }
        return paciente_complemento;
    }
}
